Skip to content

Parametrized tests1 - #4

Closed
EuphoricThinking wants to merge 1753 commits into
OLD_MAIN_parametrized_testsfrom
parametrized_tests1
Closed

Parametrized tests1#4
EuphoricThinking wants to merge 1753 commits into
OLD_MAIN_parametrized_testsfrom
parametrized_tests1

Conversation

@EuphoricThinking

@EuphoricThinking EuphoricThinking commented Jun 26, 2026

Copy link
Copy Markdown
Owner
  • tests up to two parameters are not parametrized
  • probably going to change PropertyVec to PropertySet
  • wondering whether to change arrays in Properties.hpp to PropertiesSet for consistency

kparzysz and others added 30 commits June 26, 2026 11:45
Resolve the names of CRITICAL constructs even if they are reserved
names.
This also limits locator parsing to known reserved names.

Fixes llvm#205855
…eduction costs (llvm#206124)

Fixes failure to fold to v16i32 reduction on ax512 targets

We still need to determine better CostKind values - but that can wait until llvm#194621 is complete
…#206108)

TLS 1.3 is only supported on Windows Server 2022 and beyond. Windows
Server 2019 only supports up to TLS 1.2.

This causes test failures on CI runners which run on Windows Server
2019.

This patch allows falling back to TLS 1.2 if 1.3 is not available.
…m#205864)

Prepares for `AF_UNIX` domain-socket support on Windows by separating
the cross-platform socket logic from the one platform-specific
operation.

Every domain-socket operation is identical on POSIX and Windows (via
`<afunix.h>`), so it now lives in a single base class
`DomainSocket`. The one operation that is different is `CreatePair()`.
It lives in `DomainSocketPosix` / `DomainSocketWindows`. It's selected
for the host as `DomainSocketPlatform` through
`lldb/Host/DomainSocket.h`.

This is an NFC patch: POSIX behavior is unchanged, and while the shared
code now also compiles on Windows it stays unreachable there. A
follow-up commit enables it.

rdar://180736036
…lvm#206129)

Host::OpenURL was only defined for Darwin (in Host.mm). Add a portable
implementation in the common Host.cpp: on Unix it launches xdg-open; on
Windows it returns "unsupported" for now. xdg-open is run without a
shell (run_in_shell=false) so query-string metacharacters in the URL are
never interpreted by the shell.

Also add Host::URLEncode, an RFC 3986 percent-encoder for assembling
tracker URLs. These are the building blocks for an upcoming "diagnostics
report" command that opens a pre-filled bug URL, and the encoder is
shared with a downstream tap-to-radar reporter.
The Diagnostics framework had a callback registry (AddCallback /
RemoveCallback) so subsystems could contribute files to a diagnostics
directory, intended to also run during crash handling. That crash-time
path never materialized, and the sole registered callback was the
Debugger copying its file-backed logs. If you had no logging enabled,
the directory would be empty, confusing the users.

Remove the registry and the callback loop in Diagnostics::Create (which
now just writes the in-memory log), and expose the log copying as
Debugger::CopyLogFilesToDirectory, which "diagnostics dump" calls
directly. The dump command now copies the invoking debugger's logs
rather than every debugger's, which is the more useful behavior I want
to double down on.
This fixes a problem with CIR failing to handle boolean result types for the __builtin_(add|sub|mul)_overflow functions. We were trying to lower to operations derived from CIR_BinOpOverflow, but these operations required an integer type for the return value. This change relaxes that requirement to allow integer or boolean types.

related non-CIR PR llvm#192568.
…#205937)

The majority of the content of rdar://179151476 duplicates the
PointerFlow analysis after
llvm#203633. Therefore, we only
need to upstream the tests for better test coverage and proving the
duplication.

rdar://179151476
Replace assertions that listed concrete types with generic ones that
check that the type is a vector with an even number of elements.

Update splitUnary and splitBinary.

I already updated splitBinary and splitTernary in llvm#203472, but
splitBinary change was accidentally removed in llvm#203607, so I am bringing
it back in.
When recipes are generated per type and not per variable, we can end up
with the same location for multiple private/firstprivate/reduction
variables. When materializing the recipes, set the Location of all
Operations within the recipe region to be that of the op that is being
materialized. It is okay to mutate the original recipes since the location
is already not "useful" and the recipes will always get removed at the end
of the pass.
…lvm#205531)

This continues the effort to split `<__config>` into self-contained
detail headers.
)

Introduce acc.gpu_shared_memory to represent GPU workgroup memory slots
in a compute region - used for planning before eventually turned into a
`memref.view` of a dynamic slot within the workgroup allocation.
Fixes llvm#201756

AI Usage: Used to Search codebase to find location of code to modify and
understand existing implementation.

---------

Co-authored-by: Simon Pilgrim <git@redking.me.uk>
Co-authored-by: Simon Pilgrim <llvm-dev@redking.me.uk>
Summary:
In the case of, say, a GPU sanitizer, there could be a pending report
that isn't flushed before the queue dies and the program terminates. Add
an explicit flush to ensure that all work at least posted *before* the
trap fired is cleared in the HSA error callback before actually
quitting.
Fixes llvm#205571

---------

Co-authored-by: Barry Revzin <brevzin@jumptrading.com>
Co-authored-by: Björn Schäpers <bjoern@hazardy.de>
After llvm#205632, the only clients
of the compiler invocation's `visitPaths()` APIs call it on the cow
variant. This PR moves the implementation from the base class into the
cow, allowing specialized copy-on-write behavior for mutating
visitation. If the callback requests a path to be mutated, exclusive
ownership of the containing `*Options` instance is established and the
string gets modified. This should be performance win for dependency
scans using prefix mapping, although admittedly I haven't benchmarked.
…on (llvm#190568)

Large stack allocations can skip over guard pages, causing stack clash
vulnerabilities. The probe-stack=inline-asm function attribute tells
LLVM to emit inline probing code that touches each page during stack
allocation, ensuring guard pages are hit.

`framelimit` provides hardware bounds checking, but only on the
allocframe instruction itself. SP decrements via A2_addi -- used for
frames >= 16k bytes and all no-FP prologues bypass it. Software probing
closes that gap.

When the attribute is present and the frame size exceeds the probe size,
the prologue now emits a PS_probed_stackalloc pseudo that
inlineStackProbe() expands into a compare-and-branch loop:

  r29 = add(r29, #-ProbeSize)
  memw(r29+#0) = #0
  p0 = cmp.gtu(r29, r28)
  if (p0) jump LoopMBB
  r29 = r28

Both the frame-pointer and no-frame-pointer prologue paths are handled.
The stack-probe-size attribute is respected for custom probe sizes.
Re-exposes LLVM-libc's `__subtf3` as `shared::subtf3` for reuse by
compiler-rt's builtins.

Stacked change - merge these first:
- llvm#200094


Part of llvm#197824

---------

Co-authored-by: Muhammad Bassiouni <60100307+bassiounix@users.noreply.github.com>
llvm#204466)

…t firstprivate

In e57ebfd the flag
enableDelayedPrivatizationStaging was removed, enabling 
Delayed Privatization for firstprivate on OpenMP target regions, 
this resulted in regressions for implicit firstprivate tests:

This commit readds enableDelayedPrivatizationStaging flag for the implicit
case and also guards the explicit change via
`enableDelayedPrivatization` instead of enableDelayedPrivatizationStaging.
Re-exposes LLVM-libc's `__multf3` as `shared::multf3` for reuse by
compiler-rt's builtins.

Stacked change - merge these first:
- llvm#200094
- llvm#205669

Part of llvm#197824

---------

Co-authored-by: Muhammad Bassiouni <60100307+bassiounix@users.noreply.github.com>
Nothing in the Utility or Host layers uses Diagnostics. Its only callers
are Debugger (the always-on log feeder), SBDebugger, and the
SystemInitializerCommon lifecycle. Those all live in Core or above. The
header depends only on Utility primitives (FileSpec, Log, Error), and
lldbInitialization already links lldbCore, so the move adds no new link
dependency anywhere.

Relocating it to Core lets Diagnostics reach Debugger, Target,
CommandInterpreter, and Host, which simplifies an upcoming change that
collect a richer diagnostics bundle (statistics, command snapshots,
invocation, etc) and allows us to implement that directly in the
Diagnostics class.
…198902)

Introduce two new passes for the Hexagon HVX floating-point pipeline,
targeting v79+ where QFloat (qf16/qf32) is the native HVX FP format.

HexagonXQFloatGenerator lowers IEEE-754 HVX floating-point sequences
(sf/hf) to native QFloat (qf16/qf32) operations. QFloat instructions are
faster and more power-efficient than their IEEE counterparts, with
optional accuracy trade-offs. The pass exposes four modes:

  * Strict IEEE-754 compliant
* IEEE-754 compliant (extended dynamic range and subnormal precision, no
IEEE-754 overflow handling)
  * Lossy subnormals
  * Legacy

HexagonPostRAHandleQFP runs after register allocation and corrects the
spill/refill paths. QFloat operands carry four extra precision bits that
are silently dropped if the value passes through a spill slot or a
non-HVX instruction. The pass uses the Register DataFlow Graph (RDF) to
walk use-def chains in non-SSA form, inserts qf->IEEE conversions before
spills and non-HVX uses, and rewrites saturating instruction opcodes
that can absorb IEEE operands directly.

Co-authored-by: Sumanth Gundapaneni <sgundapa@qti.qualcomm.com>
Co-authored-by: Santanu Das <santdas@qti.qualcomm.com>
Using the new InlineBehavior field of SubtargetFeature, ensure that
RISC-V's tuning related features do not prevent inlining.

Architecture features still prevent inlining.
…omparisons (llvm#204679)

Instantiating std::tuple<T...> in C++23 and later would require
computing tuple_size_v of the tuple type itself, because the
hidden-friend operator<=> and analogous comparison operators query it
for its return type. That can lead to a hard error if instantiating
tuple_size requires the type to be complete.

This patch resolves that problem by refactoring the metaprogramming
around these comparison operators. As a side effect, this should also be
slightly more efficient at compile-time because we don't cause the
instantiation of tuple_element for the current tuple.

rdar://179086119
This won't impact them working on optnone functions, but could impact
whether or not they get called in opt-bisect, which would be wrong.
`MAX_PATH` is defined as `260`. `PosixApi.h` already defines `PATH_MAX`
as `32,768` characters which is the max path limit for Unicode paths on
Windows.

Use this in lldb on Windows to avoid path truncation.
Re-exposes LLVM-libc's `__divtf3` as `shared::divtf3` for reuse by
compiler-rt's builtins.

Stacked change - merge these first:
- llvm#200094
- llvm#205669
- llvm#205670

Part of llvm#197824
)

In some environments, especially Windows with active code page other
than 65001, some characters in the CSV files cause parse errors without
explicitly specifying the UTF-8 encoding.

Explicitly using `encoding='utf-8'` in `click.File` fixes such errors.
… Going to make fixtures helper fixtures helper properties parameterized in order to be able to use a helper functions in different tests also in memory not only in the device
…reating a generalized helper header with properties
…o properties for consistency and in order enable size comparison
EuphoricThinking pushed a commit that referenced this pull request Jun 30, 2026
Implement the software ShadowCallStack for Hexagon.

On Hexagon, r19 is used as the shadow stack pointer (reserved via
-ffixed-r19). On function entry the LR (r31) is saved to the shadow
stack and the pointer is advanced; on exit the LR is restored from the
shadow stack before returning.

Prologue sequence:

    r19 = add(r19, #4)
    memw(r19+#-4) = r31

Epilogue sequence (between deallocframe/jumpr r31):

    r31 = memw(r19+#-4)
    r19 = add(r19, #-4)

SCS is only emitted when hasFP() is true: the function uses allocframe.
Leaf functions that never touch the stack do not need protection.

When SCS is active the combined L4_return (deallocframe+jump) is not
used; instead L2_deallocframe and PS_jmpret are kept separate so the
shadow-stack restore can be inserted between them.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.